/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.Bl;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.biblioteca.Enumeraciones.EstadoTransaccion;
import mx.its.dsw2.biblioteca.Modelo.Categoria;
import mx.its.dsw2.biblioteca.Modelo.CategoriaDeLibro;
import mx.its.dsw2.biblioteca.Modelo.Libro;
import mx.its.dsw2.bibliotecaDao.CategoriaDaoLocal;
import mx.its.dsw2.bibliotecaDao.CategoriaDeLibroDaoLocal;

/**
 *
 * @author Yessy
 */
@Stateless
public class CategoriaBl implements CategoriaBlLocal {
    @EJB
    private CategoriaDeLibroDaoLocal categoriaDeLibroDao;
    @EJB
    private CategoriaDaoLocal categoriaDao;
    

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public EstadoTransaccion register(Categoria category) {
      if (categoriaDao.findDuplicity(category)) {
            return EstadoTransaccion.INCOMPLETO;
                     
        } else {
            categoriaDao.create(category);
            return EstadoTransaccion.COMPLETO;
          
        }
    }

    @Override
    public EstadoTransaccion modify(Categoria category) {
         if (category.getId() == null || categoriaDao.find(category.getId()) == null) {
            return EstadoTransaccion.INCOMPLETO;
        } else {
            categoriaDao.edit(category);
            return EstadoTransaccion.COMPLETO;
        }
    }

    @Override
    public EstadoTransaccion delete(Categoria category) {
        if (category.getId() == null || categoriaDao.find(category.getId()) == null) {
            return EstadoTransaccion.INCOMPLETO;
        } else {
            categoriaDao.remove(category);
            return EstadoTransaccion.COMPLETO;

        }
    }

    @Override
    public List getAll() {
     return categoriaDao.findAll();
    }

    @Override
    public Categoria findId(int idCategoria) {
          return categoriaDao.find(idCategoria);
    }

    @Override
    public List<Categoria> getListByBook(Libro book) {
        List<CategoriaDeLibro> lista=categoriaDeLibroDao.getListByBooks(book);
        List<Categoria> listaFinal=new ArrayList<Categoria>();
        for(CategoriaDeLibro cdl:lista){
        listaFinal.add(cdl.getIdCategoria());
        }
        return listaFinal;
    }

}
